Alteryxのyxiファイルの構成全体像をまとめる

Alteryxのyxiファイルの構成全体像をまとめる

Clock Icon2018.05.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryxのツールを配布する際に便利なyxiファイルですが、これまでのブログ記事の中でもいくつか利用したものを紹介してきました。

色々なパターンがあって、なかなか全体像を把握しづらいですね。 というわけで、今回は一度yxiファイルを構成する要素をまとめてみたいと思います。

Alteryxのツールのパターン

まずは、Alteryxのツールを作成する際にどのようなパターンがあるか確認してみましょう ツールは主に実装と設定画面のUIの2つの要素で構成されます。

実装 UI
マクロ インターフェースツール
マクロ HTML GUI
JavaScript HTML GUI
Python HTML GUI

これらをyxiファイルとして配布する際の構成は、多くの部分で共通していますが必要なファイルがいくつか異なったりしています。

yxiファイルの構成を確認していく

さて、ではこれを踏まえてyxiファイルの構成を確認していきましょう。

トップ階層のファイル

まず最上位の階層には以下のファイルを配置します。

  • Config.xml
  • アイコン画像
  • ツールを入れるフォルダ(複数配置可能)
  • R-library(Rツールを使っていて追加のライブラリが必要な場合のみ)

Config.xmlとアイコン画像はAlteryxのyxiファイルを作るでも解説していますが、インストール時に表示されるダイアログの項目を設定します。

yxiファイルは同時に複数のツールを含めることが可能です。 ツール名のフォルダを複数用意して、それぞれにツールに必要なファイルを配置していきます。

  • tool_a/tool_a.yxmc
  • tool_b/tool_b.yxmc

のような配置の場合、tool_a, tool_bの2つのツールがインストールされます。

R-libraryはRツールを利用したマクロで利用します。 こちらはAlteryxのRツールを使う際にライブラリを自動的にインストールするで解説しました。

各ツールの階層

続いて、先ほどのtool_aやtool_bフォルダ内のファイルの配置について見ていきます。 このフォルダ内のファイル配置は、最初に記載したパターンごとに異なるものとなります。

インターフェースツールを使ったマクロ

これはもっとも簡単なパターンとなります。 フォルダ内にマクロのyxmcファイルを配置するのみです。

マクロ内でさらに別なマクロを作成して使っているような場合にはそのマクロも含める必要があります。 また、その際は依存マクロのパスが相対パスになっているように確認します(一度yxzpファイルでパッケージングをするのが一番手っ取り早いです)。

HTML GUIを使ったマクロ

HTML GUIを使ったマクロの場合、マクロ本体に加えていくつか追加でファイルが必要になります。

  • 設定用のxmlファイル
  • GUI用のHTMLファイル
  • アイコン画像
  • マクロ本体

これらの詳細については以下で解説しました。

HTML GUIでは、JavaScriptを使って設定画面を動的に変化させることも可能です。 例えば、認証が必要なサービスを利用するようなツールで、最初に認証画面を出してJavaScriptdで認証を行なったのち、個別項目の設定画面を出すようなツールなんがあったりします。

また、こちらもマクロ内で別なマクロを利用する際はそれらも含める必要があります。

HTML GUIを使ったマクロでは、Supporting_Macrosフォルダを作成してその中にyxmcファイルを入れるというがよく行われるようです。

Python SDKを使ったツール

Python SDKを使ったツールでは、マクロの代わりにPythonのコードを記述します。 こちらの基本的なファイル構成のほとんどは、HTML GUIを使ったマクロと同じになりますが一点だけ違う点があります。

  • 設定用のxmlファイル
  • GUI用のHTMLファイル
  • アイコン画像
  • Pythonのコード本体
  • requirements.txt

Python SDKではツールごとにvenv環境が作成され、その中にrequirements.txtに記載された依存ライブンラリをインストールします。実際に展開されるファイルにはこの依存ライブラリも含まれますが、yxiファイルの中に含める必要はありません。 Python SDKについては以下で解説しました。

JavaScriptを使ったツール

JavaScriptを使ったツールも基本的にはPython SDKと同様にマクロの代わりにJavaScriptで処理内容を実装するものになっています。 ファイル構成としては、Pythonファイルの代わりにJavaScriptのファイルを配置します。 依存ライブラリに関しては、マクロと同様、中に含めてやってください。

こちらに関しての内容を解説したものは今のところありません(私があまりJavaScriptをかける人ではないので...)。

全体構成

全体的には以下のような感じの構成になります。

├── Blog_Tools.png
├── Config.xml
├── R-library
│   ├── lib1
│   └── lib2
├── macro1
│   └── macro1.yxmc
├── macro2
│   ├── Supporting_Macros
│   │   ├── macro2.yxmc
│   │   └── macro2_dependency.yxmc
│   ├── macro2.png
│   ├── macro2Config.xml
│   ├── macro2Gui.html
│   └── macro2Gui.js
└── python_tool
    ├── python_tool.png
    ├── python_tool.py
    ├── python_toolConfig.xml
    ├── python_toolGui.html
    └── requiremanets.txt

これ全体を1つのyxiファイルにした場合

  • macro1
  • macro2
  • python_tool

という3つのツールがインストールされます。

yxiファイルの作成

これらの構成が完了したら最後にyxiファイルを作成します。 とは言ってもyxiファイルを作成する機能がが用意されているわけではありません。

これは、非常に簡単に作成できます。 上記の構成全体をzipで圧縮したのち、拡張子をyxiに変えるだけです。

yxiファイルのGalleryでの公開

せっかくyxiファイルを作成したのだったら、いろんな人に使ってもらいたいですよね? もちろんファイルなのでそのまま他の人にあげれば利用可能です。 ですが、ここではGalleryやAlteryx Serverで配布する方法をみていきたいと思います。

とはいっても実は、バージョン2018.1現在、yxiファイルを直接アップロードする機能は存在していません。 そのため、以下のような手順を踏みます。

  1. http(s)でダウンロード可能な場所にyxiファイルを置く
  2. ダウンロード先を案内するためのワークフローを作成してGalleryにアップロードする

となります。 1の手順に関しては、各自好きな方法を使ってください。

2に関してですが、Galleryに公開されているものの多くは以下のようになっています。

ワークフローのMeta Infoにダウンロード先を記載

まずアップロード用に新規のワークフローを作成します。 このワークフローのMeta InfoのDescriptionの下にあるURLにダウンロード先のURLを記述します。

Display Textには必要に応じてリンクの表示文字列を記述してください。

このワークフローをアップロードすればダウンロード先への誘導が可能です。 しかし、このワークフローには今のところ何もないので、実行した際にDescriptionに記載したものと同等なテキストや古いバージョンに関する情報などを出力するようにしてあげます。

ReportingのReport Textツールでこれらに関する情報を記載したのち、 Renderツールで出力ファイルをpcxml形式にしてやればGalleryで結果がそのまま出力されるようになります。

一例として、以下は以前私が公開した日本語形態素解析を行うツールの出力結果です。

このような形式で実行結果として、出力されます。

おわりに

今回は、様々な方法でyxiファイルを作るときのフォルダ構成についてまとめてみました。 ツールを作ってyxiファイルで配布する際には参考にしていただければと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.